/**
 * 默认校验规则
 * required:true              必输字段
 * remote:"check.php"         使用ajax方法调用check.php验证输入值
 * email:true                 必须输入正确格式的电子邮件
 * url:true                   必须输入正确格式的网址
 * date:true                  必须输入正确格式的日期 日期校验ie6出错，慎用
 * dateISO:true               必须输入正确格式的日期(ISO)，例如：2009-06-23，1998/01/22 只验证格式，不验证有效性
 * number:true                必须输入合法的数字(负数，小数)
 * digits:true                必须输入整数
 * creditcard:                必须输入合法的信用卡号
 * equalTo:"#field"           输入值必须和#field相同
 * accept:                    输入拥有合法后缀名的字符串（上传文件的后缀）
 * maxlength:5                输入长度最多是5的字符串(汉字算一个字符)
 * minlength:10               输入长度最小是10的字符串(汉字算一个字符)
 * rangelength:[5,10]         输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)
 * range:[5,10]               输入值必须介于 5 和 10 之间
 * max:5                      输入值不能大于5
 * min:10                     输入值不能小于10
 * 对表单元素验证
 */
var formElem={
    rules: { 
 		"model.userName": { 
        	minlength: 2,
        	checkChars:true
		},
		"model.password":{
			required:true,
			minlength:6
		},
		"model.confirmPassword":{
			required:true,
			equals:"$(document.getElementsByName('model.password')[0]).val()"//password的值作为参数传递给验证方法equals(param)
		},
		"model.sex":{
			required:true
		},
		"model.interest":{
			required:true
		},
		"model.capital":{
			checkDigits:true
		}
	},
	messages: { 
		"model.userName": {
        	minlength: jQuery.format("这个长度不能少于{0}个字符哦！") 
    	},
    	"model.password":{
    		required:"密码是必填项!",
        	minlength: "密码长度不能少于6位哦！" 
    	}
	},
	submitHandler: function(form) { 
		alert("submitted!");//处理submit按钮提交触发的事件，如果是js方式提交(document.form1.submit)，则不会监听到，但如果通过jQuery方式$("#formId").submit，应会被监听执行。
		return false;
		form.submit();
	},
	ignore:".ignore",//忽略验证class=ignore的元素
	debug:true,//调试模式，不会提交表单,只进行检查(设置submitHandler无效)
	errorPlacement: function(error, element) {// 设置错误信息显示位置,element:当前验证的元素,配合errorContainer,errorLabelContainer,wrapper这三个属性同时使用，实现在一个容器内显示所有错误提示的功能，并且没有信息时自动隐藏
	    if (element.is(":checkbox")||element.is(":radio"))
		    error.insertAfter(element.next().next());
	    else
	        error.appendTo(element.parent());//错误信息显示在element的父级对象(td)中
	},
	success: function(label) {//单个表单元素验证通过后执行该方法，表单提交时对所有的元素进行验证，每个元素验证通过都会执行一次。
		label.text("欧了!").addClass("success");
	},
	//errorElement:"div"//指定错误提示标签为div,便于使用浮动样式 
}



/**
 * 自定义验证规则:比较相等equalTo:'#password'
 * 调用jQuery类库的静态方法addMethod: function(name, method, message)
 * name:验证规则名
 * method:验证规则实现函数（function）
 * message:验证不通过显示的错误消息
 */
$.validator.addMethod(
    "equals",
    function(value,element,param){   //value:验证对象的值,element:验证的元素,param：传的参数 (equals:password.value)
    	return value==eval(param);
    	//return this.optional(element)
    },"密码不相同"
);
/**
 * 自定义验证规则
 * 输入违规字符校验,只允许为中文、英文和数字的混合 
 */
$.validator.addMethod(
	    "checkChars",
	    //输入违规字符校验,只允许为中文、英文和数字的混合
		function (value,element,param){
			var regex = /^(\w|[\u4E00-\u9FA5])*$/; 
			var result= regex.test(value) || this.optional(element);
			if(!result){
				for(var i=0;i<value.length;i++){
    				var ch=value.charAt(i);
    				if(/[^[\w\u4E00-\u9FA5]/.test(ch)){
    					$.validator.messages["checkChars"]="”"+value+"”中包含无效字符“"+ch+"”，只允许为中文、英文和数字！";
						return false;
    				}
    			}
			}
			return true;
        }
);

/**
 * 自定义验证规则
 * 必须为正数，且精确到小数点后两位
 */
$.validator.addMethod(
	    "checkDigits",
	    //输入违规字符校验,只允许为中文、英文和数字的混合
		function (value,element){
	    	var isVerify=null;
	    	var msg="";
	    	var regex = /^[1-9][0-9]+(\.\d{1,2})?$/;
	    	var result=regex.test(value);
	    	if(!result){
	    		if(value.charAt(0)=="-"||value.charAt(0)=="0"){
	    			msg="不正确，提示:"+(value.charAt(0)=="-"?"不允许为负数":"首字符["+value.charAt(0)+"]无效！");
	    		}else {
	    			for(var i=0;i<value.length;i++){
	    				var ch=value.charAt(i);
	    				if(/[^\d\.]/.test(ch)){
	    					msg="不正确，提示:字符["+ch+"]无效！";
	    					isVerify=false;
	    					break;
	    				}
	    				isVerify=true;
	    			}
	    		}
	    		if(isVerify) {
	    			if(value.indexOf(".")>=0) {
	    				var arr=value.split(".");
	    				if(arr[1].length>2){
	    					msg="不正确，提示:小数点后只能保留两位！";
	    				}
	    			}
	    		}
	    		$.validator.messages["checkDigits"]=msg;//alert(msg);
	    		return false;
	    	}
	    	return true;
        }
);

/**
 * 重置表单value值
 */
$.fn.resetForm = function() {
	return this.each(function() {
		// guard against an input with the name of 'reset'
		// note that IE reports the reset function as an 'object'
		if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
			this.reset();
	});
};
